/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author daveronvanderham
 */
public class Tafelverdeling {

    private ArrayList<ArrayList> tafels;
    private int aantalTafels;
    private String toernooiNaam;
    private String toernooiDatum;
    private int rondeNummer;
    private Spelers[] spelers;

    public Tafelverdeling(String argToernooiNaam, String argToernooiDatum, int argRondeNummer) {
        this.toernooiNaam = argToernooiNaam;
        this.toernooiDatum = argToernooiDatum;
        this.rondeNummer = argRondeNummer + 1;
        System.out.println(this.rondeNummer);

        this.maakTafelVerdeling();
    }

    public void maakTafelVerdeling() {
        this.aantalTafels = 0;
        this.tafels = new ArrayList<>();

        Spelers nieuw = new Spelers();

        int restdeelnemers;

        if (this.rondeNummer == 1) {

            spelers = nieuw.haalSpelersOp(this.toernooiDatum, this.toernooiNaam);
            System.out.println("dit toernooi heeft " + spelers.length + " spelers");
        } else {
            spelers = nieuw.haalWinnaarsOp(this.toernooiDatum, this.toernooiNaam, this.rondeNummer - 1);
            System.out.println("dit toernooi heeft " + spelers.length + " spelers");

        }
        if (this.rondeNummer == 1) {
            if (spelers.length < 16) {
                System.out.println("te weinig deelnemers");
            }
        } else {
            for (int j = 8; j > 3; j--) {
                this.aantalTafels = spelers.length / j;
                restdeelnemers = spelers.length % j;
                if (this.rondeNummer == 1) {
                    if (aantalTafels >= 4) {
                        for (int k = 0; k < aantalTafels; k++) {
                            ArrayList tafel = new ArrayList();
                            tafels.add(tafel);
                        }
                        break;
                    }
                } else {
                    for (int k = 0; k < aantalTafels; k++) {
                        ArrayList tafel = new ArrayList();
                        tafels.add(tafel);
                    }
                    break;
                }
            }

            for (int l = 0; l < spelers.length; l++) {
                tafels.get(l % tafels.size()).add(spelers[l].getLid());
            }

            for (int i = 0; i < tafels.size(); i++) {
                System.out.println(tafels.get(i));

            }
        }
    }

    public boolean naarDatabase() {

        for (int i = 0; i < tafels.size(); i++) {
            TafelRonde tafelRonde = new TafelRonde();
            tafelRonde.setRondenummer(this.rondeNummer);
            tafelRonde.setTafelnummer(i);
            tafelRonde.setToernooiDatum(this.toernooiDatum);
            tafelRonde.setToernooiNaam(this.toernooiNaam);
            tafelRonde.toevoegen();

            if (tafelRonde.isGevalideerd()) {
                for (int x = 0; x < tafels.get(i).size(); x++) {
                    TafelRondeSpeler tafelRondeSpeler = new TafelRondeSpeler();
                    tafelRondeSpeler.setRondenummer(this.rondeNummer);
                    tafelRondeSpeler.setTafelnummer(i);
                    tafelRondeSpeler.setToernooiDatum(this.toernooiDatum);
                    tafelRondeSpeler.setToernooiNaam(this.toernooiNaam);
                    tafelRondeSpeler.setSpeler((int) this.tafels.get(i).get(x));
                    tafelRondeSpeler.toevoegen();
                }

            } else {
                String bericht = "";
                ArrayList berichten = tafelRonde.getBericht();
                for (int j = 0; j < berichten.size(); j++) {
                    bericht = bericht + (String) berichten.get(j) + "\n";
                }

                JOptionPane.showMessageDialog(null, bericht);
                tafelRonde.resetBericht();
            }


        }

        return true;
    }
}